package springboot.service.impl;


import org.springframework.stereotype.Service;
import springboot.Tools.time;
import springboot.dao.MsgDao;
import springboot.dao.StaffDao;
import springboot.doMain.Msg;
import springboot.entity.AllGroupMsg;
import springboot.service.MsgService;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;


@Service
public class MsgServiceImpl implements MsgService {
	
	private final MsgDao msgDao;
	
	final
	StaffDao staffDao;
	
	public List<Msg> activeGroup(Msg msg) {
		return msgDao.activeGroup(msg);
	}
	
	
	public MsgServiceImpl(MsgDao msgDao, StaffDao staffDao) {
		this.msgDao = msgDao;
		this.staffDao = staffDao;
	}
	
	@Override
	public int add_problem_status(Msg msg) {
		try {
			msgDao.add_problem_status(msg);
		} catch (Exception exception) {
			System.err.println("add_problem_status = " + exception);
		}
		return msg.getHq();
	}
	
	@Override
	public List<Map<Object, Object>> getNotInsertWxGroup() {
		return msgDao.getNotInsertWxGroup();
	}
	
	@Override
	public List<Msg> ask_all_message(Msg msg) {
		if (msg.getEngineer().equals("") || msg.getEngineer().equals("all_engineer")) {
			msg.setEngineer(null);
		}
		try {
			List<Msg> msgList = msgDao.ask_all_message(msg);
			Date date;
			for (Msg msg1 : msgList) {
				/* 时间戳转时间*/
				date = time.StringToDate(String.valueOf(msg1.getTime()));
				msg1.setDate(date);
				msg1.setAdmin(time.dateFormat(date));
			}
			return msgList;
		} catch (Exception exception) {
			System.err.println("ask_all_message = " + exception);
			return null;
		}
	}
	
	@Override
	public int update_msg_status(Msg msg) {
		try {
			if (msg.getType().equals("problem")) {
				return msgDao.update_problem_status(msg);
			} else if (msg.getType().equals("message")) {
				return msgDao.update_message_status(msg);
			} else {
				return 0;
			}
		} catch (Exception exception) {
			return 0;
		}
		
	}
	
	@Override
	public List<Msg> msg_all() {
		try {
			return msgDao.msg_all();
		} catch (Exception exception) {
			
			return null;
		}
		
	}
	
	@Override
	public List<Msg> getNoCpName() {
		return msgDao.getNoCpName();
	}
	
	@Override
	public int updateGroupName(Msg msg) {
		return msgDao.updateGroupNameById(msg);
	}
	
	@Override
	public int updateAllMsgGroupName(Msg msg) {
		return msgDao.updateAllMsgGroupNameById(msg);
	}
	
	@Override
	public int updateWorkMsgGroupName() {
		return msgDao.updateWorkMsgGroupName();
	}
	
	@Override
	public int updateAllMsgGroupName() {
		return msgDao.updateAllMsgGroupName();
	}
	
	@Override
	public int updateAllMsgAndWorkMsg() {
		return updateWorkMsgGroupName() + updateAllMsgGroupName();
	}
	
	@Override
	public List<Msg> all_group_message(Msg msg) {
		try {
			if (msg.getEngineer().equals("all_engineer")) {
				msg.setEngineer(null);
			}
			return msgDao.all_group_message(msg);
			
		} catch (Exception exception) {
			System.err.println("all_group_message = " + exception);
			return null;
		}
	}
	
	@Override
	public List<Msg> msg_byGroupId(Msg msg) {
		try {
			if (msg.getEngineer().equals("all_engineer")) {
				
				msg.setEngineer(null);
			}
			
			List<Msg> msgList = msgDao.msg_byGroupId(msg);
			for (Msg msg1 : msgList) {
				/*时间戳转时间*/
				Date date = time.StringToDate(String.valueOf(msg1.getTime()));
				msg1.setDate(date);
				msg1.setAdmin(time.dateFormat(msg1.getDate()));
			}
			return msgList;
			
		} catch (Exception exception) {
			System.err.println("msg_byGroupId = " + exception);
			return null;
		}
	}
	
	@Override
	public List<Msg> all_group() {
		
		try {
			return msgDao.all_group();
		} catch (Exception exception) {
			
			return null;
		}
	}
	
	@Override
	public List<AllGroupMsg> all_group_msg() {
		List<Msg> temp = msgDao.all_group();
		List<AllGroupMsg> allGroupMsgList = new ArrayList<>();
		for (Msg msg : temp) {
			List<Msg> msg_byGroupId_list = msgDao.msg_byGroupId(msg);
			allGroupMsgList.add(new AllGroupMsg(msg.getCpId(), msg.getCpName(), msg_byGroupId_list));
		}
		return allGroupMsgList;
	}
	
	@Override
	public List<Msg> msg_search(Msg msg) {
		
		String Engineer = msg.getEngineer();
		if (Engineer.equals("") || Engineer.equals("全部")) {
//            调用不查询用户方式
			try {
				return msgDao.all_msg_search(msg);
			} catch (Exception exception) {
				
				return null;
			}
		} else {
//            正常方式查询
			try {
				return msgDao.msg_search(msg);
			} catch (Exception exception) {
				
				return null;
			}
		}
		
		
	}
	
	@Override
	public List<Msg> msg_all_need_reply() {
		try {
			return msgDao.msg_all_need_reply();
		} catch (Exception exception) {
			
			return null;
		}
	}
	
	@Override
	public List<Msg> msg_all_had_reply() {
		try {
			return msgDao.msg_all_had_reply();
		} catch (Exception exception) {
			
			return null;
		}
	}
	
	@Override
	public List<Msg> msg_all_need_resolve() {
		try {
			return msgDao.msg_all_need_resolve();
		} catch (Exception exception) {
			
			return null;
		}
	}
	
	
	@Override
	public List<Msg> msg_all_had_resolve() {
		try {
			return msgDao.msg_all_had_resolve();
		} catch (Exception exception) {
			
			return null;
		}
	}
	
	@Override
	public List<Map<String, Object>> selGroupLiveSevenDays(Date startTime) {
		return msgDao.selSellerGroupLive(startTime.getTime());
	}
	
	@Override
	public List<Msg> msg_engineer_need_reply(Msg msg) {
		try {
			
			return msgDao.msg_engineer_need_reply(msg);
		} catch (Exception exception) {
			
			return null;
		}
	}
	
	@Override
	public List<Msg> msg_engineer_need_resolve(Msg msg) {
		try {
			
			return msgDao.msg_engineer_need_resolve(msg);
		} catch (Exception exception) {
			return null;
		}
	}
	
	@Override
	public Msg selMsgByHq(Integer hq) {
		return msgDao.selMsgByHq(hq);
	}
	
	@Override
	public int change_problem(Msg msg) {
		return msgDao.change_problem(msg);
	}
	
	@Override
	public List<Map<Object, Object>> engineerData(Map<String, Date> data) {
		long startTime = 0;
		long endTime = 0;
		try {
			Date date = data.get("startTime");
			Date date1 = data.get("endTime");
			startTime = date.getTime();
			endTime = date1.getTime();
			
		} catch (Exception e) {
			System.err.println("时间转换错误 = " + e);
		}
		List<Map<Object, Object>> maps = new ArrayList<>();
		try {
			
			maps = msgDao.engineerData(startTime, endTime);
		} catch (Exception exception) {
			System.err.println("请求员工工作数据sql错误 = " + exception);
		}
		return maps;
	}
	
	@Override
	public List<Map<String, String>> selEngineerAvgCount(Map<String, Date> data) {
		return null;
	}
	
	@Override
	public List<Map<Object, Object>> needAddStatusProblem(Map<String, Object> data) {
		return null;
	}
	
	@Override
	public List<Map<String, Object>> selEngineerWorkInfo(Map<String, Object> objectMap) {
		
		staffDao.selEngineerByDepartment((String) objectMap.get("department"));
		
		return null;
	}
}
